package com.cictec.middleware.tde.rm.protocol.rm.encode;

import java.nio.ByteBuffer;

import com.cictec.middleware.commons.utils.BinaryUtils;
import com.cictec.middleware.tde.exception.MessageEncoderException;
import com.cictec.middleware.tde.rm.protocol.AbstractMessageEncoder;
import com.cictec.middleware.tde.rm.protocol.TerminalMessage;
import com.cictec.middleware.tde.rm.protocol.annotion.TerminalMessageEncoder;
import com.cictec.middleware.tde.rm.protocol.rm.message.Rm0x4ATerminalMessage;
import com.cictec.middleware.tde.rm.protocol.rm.utils.RmBinaryUtils;


/**
 *   0x01  连接请求
 *
 */
@TerminalMessageEncoder(0x4A)
public class Rm0x4AEncoder extends AbstractMessageEncoder{

	
	@Override
	public byte[] encode(TerminalMessage message) throws MessageEncoderException {
		
		Rm0x4ATerminalMessage msg = (Rm0x4ATerminalMessage)message;
		
		ByteBuffer out = ByteBuffer.allocate(256);
		RmBinaryUtils.dateToDwordRM(msg.getCreateTime(), out);			// 产生时间 HEX 4 字节 数据内容产生时间
		byte[] manuId = BinaryUtils.stringToBytes(msg.getManuId());
		BinaryUtils.intToUnsignedByte(manuId.length, out);
		out.put(manuId);
		BinaryUtils.intToWord(msg.getReserved(),out);					// 预留 HEX 2 字节
		
		return toBytes(out);
	}


}
